﻿// 3399. 论文.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://www.acwing.com/problem/content/3402/

小 H为了完成一篇论文，一共要完成 n个实验。

其中第 i个实验需要 ai的时间去完成。

小 H可以同时进行若干实验，但存在一些实验，只有当它的若干前置实验完成时，才能开始进行该实验。

同时我们认为小 H 在一个实验的前置实验都完成时，就能马上开始该实验。

为了让小 H尽快完成论文，需要知道在最优的情况下，最后一个完成的实验什么时候完成？

小 H 还想知道，在保证最后一个实验尽快完成的情况下（即保证上一问的答案不变），他想知道每个实验最晚可以什么时候开始。

设第 i 个实验最早可能的开始时间为 fi
，不影响最后一个实验完成时间的最晚开始时间为 gi，请你回答

∏i=1n(gi−fi+1)
除以 109+7所得的余数。

题目保证有解。

输入格式
第一行输入一个整数 n,m。

第二行输入 n 个正整数，a1,a2,.....an，描述每个实验完成所需要的时间。

接下来读入 m 行，每行读入两个整数 u,v，表示编号为 u 的实验是编号为 v 的实验的前置实验。

输出格式
第一行输出一个整数表示最晚完成的实验的时间。

第二行输出一个整数表示 ∏i=1n(gi−fi+1)除以 109+7 所得的余数。

数据范围
1≤n≤105
,
1≤m≤5×105
,
1≤ai≤106
输入样例：
7 5
11 20 17 10 11 17 17
5 4
6 1
7 3
2 4
2 1
输出样例：
34
7840
样例解释
第一个实验最早开始时间为 20，最晚开始时间为 23。

第二个实验最早开始时间为 0，最晚开始时间为 3。

第三个实验最早开始时间为 17，最晚开始时间为 17。

第四个实验最早开始时间为 20，最晚开始时间为 24。

第五个实验最早开始时间为 0，最晚开始时间为 13。

第六个实验最早开始时间为 0，最晚开始时间为 6。

第七个实验最早开始时间为 0，最晚开始时间为 0。
*/
int main()
{
    std::cout << "Hello World!\n";
}

 